﻿namespace ProblemsSet
{
    public class Problem_130 : BaseProblem
    {
        public override object GetResult()
        {
            const int max = 25;

            long cnt = 0;
            long sum = 0;

            for (long n = 3; n <= long.MaxValue; n++)
            {
                var tmp = MathLogic.GetANotForPrimes(n, n-1);
                if (tmp == -1) continue;
                if ((n-1)%tmp == 0)
                {
                    cnt++;
                    sum += n;
                    if (cnt == max)
                        return sum;
                }
            }
            return -1;
        }

        public override string Problem
        {
            get
            {
                return @"A number consisting entirely of ones is called a repunit. We shall define R(k) to be a repunit of length k; for example, R(6) = 111111.

Given that n is a positive integer and GCD(n, 10) = 1, it can be shown that there always exists a value, k, for which R(k) is divisible by n, and let A(n) be the least such value of k; for example, A(7) = 6 and A(41) = 5.

You are given that for all primes, p  5, that p  1 is divisible by A(p). For example, when p = 41, A(41) = 5, and 40 is divisible by 5.

However, there are rare composite values for which this is also true; the first five examples being 91, 259, 451, 481, and 703.

Find the sum of the first twenty-five composite values of n for which
GCD(n, 10) = 1 and n  1 is divisible by A(n).";
            }
        }

        public override bool IsSolved
        {
            get
            {
                return true;
            }
        }

        public override object Answer
        {
            get
            {
                return 149253;
            }
        }
    }
}
